The present disclosure generally relates to computing technology, and more particularly to methods, computer program products and data processing systems for improving the performance of executable program code.
Computer software includes a set of instructions to be executed by a data processing system. Computer software provides instructions that enable a data processing system to function as, for example, a word processing device, spreadsheet device, or an Internet browsing device, a data repository, etc. There are a wide variety of different data processing systems capable of using computer software. Accordingly, as used herein, the term “data processing system” is intended to have a broad meaning, and may include personal computers, laptop computers, palmtop computers, handheld computers, network computers, servers, mainframes, workstations, cellular telephones and similar wireless devices, personal digital assistants and other electronic devices on which computer software may be installed. The terms “computer”, “computer software”, “computer program”, “computer programming”, “software”, “software program” and related terms are intended to have a similarly broad meaning.
Generally, modern computer software is originally written in a “high level” computer programming language using syntactic constructs that are comprehensible by a programmer to represent the instructions embodied in the software. High level computer programming languages are useful because their syntactic constructs make it easier for programmers to create computer software, since they do not need to compose instructions in a language that would be directly understood by the data processing system. Writing instructions in such a language would be far more difficult because such languages bear little or no resemblance to any human language.
Instructions written in a high level computer programming language, however, generally cannot be directly understood and implemented by a data processing system. Therefore, before a computer program written in a high level computer programming language may be used by a data processing system, it is first “compiled” into language that will be understood by the target data processing system. Compiling is a process, usually carried out by a computer program called a “compiler”, in which the syntactic constructs of the high level computer programming language are in essence translated into instructions in a language that will be understood by the target data processing system (possibly through an intermediate software layer). The result of the “compiling” or “compilation” process is known as “executable code” or “binary code”, meaning computer program code that can be executed by the data processing system either directly or by an intermediate software layer, and the instructions that will be understood by the target data processing system are denoted “machine” instructions.
High level computer programming languages may be viewed as falling within one of two broad types: statically compiled languages, and dynamically compiled languages. In statically compiled languages, the compilation process is carried out a single time before any code is executed, and the result of the compilation is executable code that can be implemented directly by the data processing system without any intermediate software layer. Statically compiled languages include C, C++, FORTRAN, PL/I, COBOL and Ada. In dynamically compiled languages, such as Java™, the source code is first compiled into an intermediate form that can be implemented by an intermediate software layer, such as a Java virtual machine (JVM). In Java, this intermediate form is known as “bytecode”. Typically, but not necessarily, the intermediate software layer will carry out additional compilation each time the computer program is run, usually to translate the intermediate form of the source code into executable code that can be directly executed by the data processing system.